package modelo;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import dao.AusenciaDAO;
import entidades.Ausencia;
import entidades.Obrero;
import entidades.Proyecto;
import excepciones.FaltanCompletarCamposException;
import excepciones.FechaNoPuedeSerMayorException;


public class ModeloAusencia {
	

	public List<Ausencia> obtenerListaAusencias() throws Exception{
		return AusenciaDAO.getInstancia().obtenerListaAusencias();
	}
	
	public void altaAusencia(Date fecha, Boolean justificada,
			String notas, Proyecto proyecto, Obrero obrero) throws Throwable{ 
		
		if(proyecto == null || obrero == null ){
			throw new FaltanCompletarCamposException();
		}
		
		Calendar cal = new GregorianCalendar();
		if(fecha.after(cal.getTime())){
			throw new FechaNoPuedeSerMayorException();
		}
		
		ModeloObrero m = new ModeloObrero();
		
		Ausencia a = new Ausencia();
		a.setFecha(fecha);
		a.setJustificada(justificada);
		a.setNotas(notas);
		a.setObrero(obrero);
		a.setProyecto(proyecto);
		
		AusenciaDAO.getInstancia().guardarUnaAusencia(a);
		
		if(justificada == false){
			m.actualizarScorePorAusencia(obrero, proyecto);
		}		
	}

	public int obtenerCantAusenciasSinJustificar(Obrero obreroSeleccionado, Proyecto proyectoSeleccionado) throws Exception {
		return AusenciaDAO.getInstancia().obtenerCantAusenciasSinJustificar(obreroSeleccionado, proyectoSeleccionado);
	}
	
	
}
